灵感
想给自已的blog
添加一个相册功能、给生活中的点点滴滴留影记录。搜寻网络上给Next主题添加相册功能的基本上没有,只能重头到尾开始一点点的实践。
大致的想法:
1. 相册展示类似于归档
一样,按时间戳来分类
2.每一个时间节点都是一个小相册,展示的时候上面是相册的标题,下面是几张经典图片的缩略图
3.点击标题,进行相册的详细页面,可以看到更多关于这个小相册的图片
4.相册展示的特效类似于Lawlite
实践
插件开发实践
由于Hexo基于NodeJS开发的,通过插件的方式集成一些第三方的功能。比如归档是 通过hexo-generator-archive实现的,标签页是通过hexo-generator-tag实现的。更多Hexo插件请看Hexo Plugins.这里就不过多讨论。
本次实践修改的插件有:
1.hexo-generator-archive
2.hexo-generator-index
2.hexo-generator-category
4.hexo-generator-photo[自已新增的]
每一个小相册都是一个MD文件,每次首页和归档生成的时候都会把相册加载进去。我想让相册和博客进行区别,所以在MD文件的开头会声明一个属性isPhoto
,true表示相册、false表示普通博客文章
。
hexo-generator-archive
和hexo-generator-index
中去除相册的展示。
修改插件的\lib\generator.js
文件,在exports
函数,变量声明完加上如下一段代码。
//过滤所有的文章 |
归档的时候会显示所有文章的总数(包含相册),通过下列方式去除掉。
在hexo-generator-archive
插件的\lib\generator.js
文件添加如下注释的代码:
function generate(path, posts, options) { |
修改归档的展示页面代码(themes\next\layout\archive.swig
):
将site.posts.length
改为page.postLength
即可。
新增hexo-generator-photo
插件,自动生成相册时间戳界面,参考hexo-generator-archive
插件。
拷贝hexo-generator-archive
的源码,主要修改以下几个文件:
1.index.js
:
/* global hexo */ |
2.package.json
:
{ |
3.generator.js
:
'use strict'; |
hexo
执行调用Hexo-generator-photo
插件:
网站根目录的package.json
文件中添加如下一行:
"hexo-server": "^0.2.0", //下面添加,不要遗漏"," |
相册样式调整
新增相册的swig文件(themes\next\layout\photo.swig
):
{% extends '_layout.swig' %} |
添加相册子标题模板(themes\next\layout\_macro\post-collapse-photo.swig
):
{% macro render(post) %} |
新增样式(themes\next\source\css\_custom\custom.styl
):
box{ width:100%;} |
#####相册配置#####
站点文件配置(_config.yml)新增如下配置:
|
//Photo生成配置 |
主题文件配置(_config.yml)新增如下配置
menu: //menu节点添加如下一行 |
中文显示(themes\next\languages\zh-Hans.yml):
title: //节点下添加如下一行 |
测试
source\_posts
目录下添加相册的MD文件,内容如下:
|
通过`Hexo server`启动服务,访问`http://localhost:4000/photos/`即可看到生成的相册界面。
心得 总结
安装Hexo之后,插件默认存放在blog\node_modules
目录下。
插件开发的核心文件:index.js
,package
.json,generator.js
关于插件开发的Demo:Plugin Demo
后续优化
- 首页、标签、文章详情页日志总数减去相册的条数(site.pages.length)
- 图片展示优化
- 图片整理(QQ空间链接不行)
- 视屏的优化
- 相册页的日志总条数问题